package com.cg.ai.service;

import com.cg.ai.entity.po.ChatMessage;
import com.cg.ai.entity.po.ChatSession;
import com.cg.ai.entity.vo.ChatEntity;
import com.cg.ai.entity.vo.ChatResponse;

import java.util.List;

public interface ChatService {
    /**
     * 如果sessionIdHint不为空且存在，则返回该会话，否则创建新会话
     */
    ChatSession createSessionIfNeeded(Long userId, Long sessionIdHint);
    
    /**
     * 创建新会话
     */
    ChatSession createSession(Long userId, String title);
    
    /**
     * 添加用户消息
     */
    ChatMessage appendUserMessage(Long sessionId, Long userId, String content);
    
    /**
     * 添加AI助手消息
     */
    ChatMessage appendAssistantMessage(Long sessionId, Long userId, String content);
    
    /**
     * 获取会话的消息列表
     */
    List<ChatMessage> listMessages(Long sessionId);
    
    /**
     * 获取用户的会话列表
     */
    List<ChatSession> listSessions(Long userId);
    
    /**
     * 删除会话及其消息
     */
    void deleteSession(Long sessionId);

    /**
     * 同步聊天：追加用户消息，调用模型生成完整回复，保存助手消息并返回。
     */
    ChatResponse chat(Long userId, Long sessionIdHint, String prompt);
    
    /**
     * 流式聊天：使用SSE方式实现流式响应
     */
    void doChat(ChatEntity chatEntity);
}